RESTful API (Representational State Transfer API) হল একটি স্থিতিশীল এবং কার্যকরী পদ্ধতি, যা HTTP প্রটোকল ব্যবহার করে ডেটার আদান-প্রদান করে। এটি সাধারণত JSON বা XML ফরম্যাটে ডেটা পাঠায় এবং গ্রহণ করে। CodeIgniter-এ RESTful API তৈরি করা অনেক সহজ এবং একে কার্যকরীভাবে ব্যবহার করা যায়।
CodeIgniter সরাসরি REST API তৈরি করার জন্য কোনো বিল্ট-ইন ক্লাস সরবরাহ না করলেও, আমরা CodeIgniter REST Controller তৈরি করতে পারি এবং থার্ড-পার্টি লাইব্রেরি ব্যবহার করতে পারি যেমন CodeIgniter RESTful
লাইব্রেরি।
CodeIgniter-এ RESTful API তৈরি করার জন্য সবচেয়ে সাধারণ লাইব্রেরি হল CodeIgniter Rest Server লাইব্রেরি। এটি ব্যবহার করে API সহজে তৈরি করা যায়।
লাইব্রেরি ইনস্টল করা:
application/libraries
ডিরেক্টরিতে REST_Controller.php
ফাইলটি রাখুন।application/config/config.php
ফাইলে config['rest_enable_keys']
কনফিগারেশন সঠিকভাবে সেট করুন।Controller তৈরি করার জন্য:
<?php
require(APPPATH . 'libraries/REST_Controller.php');
class User extends REST_Controller {
public function __construct() {
parent::__construct();
// মডেল লোড করা
$this->load->model('User_model');
}
// GET রিকোয়েস্ট হ্যান্ডলিং
public function index_get($id = NULL) {
if ($id === NULL) {
// সমস্ত ব্যবহারকারীর তথ্য
$users = $this->User_model->get_all_users();
} else {
// নির্দিষ্ট ব্যবহারকারীর তথ্য
$users = $this->User_model->get_user($id);
}
if ($users) {
$this->response($users, REST_Controller::HTTP_OK); // 200 OK
} else {
$this->response(NULL, REST_Controller::HTTP_NOT_FOUND); // 404 Not Found
}
}
// POST রিকোয়েস্ট হ্যান্ডলিং
public function index_post() {
$data = $this->input->post();
$insert = $this->User_model->insert_user($data);
if ($insert) {
$this->response($data, REST_Controller::HTTP_CREATED); // 201 Created
} else {
$this->response(NULL, REST_Controller::HTTP_BAD_REQUEST); // 400 Bad Request
}
}
// PUT রিকোয়েস্ট হ্যান্ডলিং
public function index_put($id) {
$data = $this->put();
$update = $this->User_model->update_user($id, $data);
if ($update) {
$this->response($data, REST_Controller::HTTP_OK); // 200 OK
} else {
$this->response(NULL, REST_Controller::HTTP_BAD_REQUEST); // 400 Bad Request
}
}
// DELETE রিকোয়েস্ট হ্যান্ডলিং
public function index_delete($id) {
$delete = $this->User_model->delete_user($id);
if ($delete) {
$this->response(NULL, REST_Controller::HTTP_NO_CONTENT); // 204 No Content
} else {
$this->response(NULL, REST_Controller::HTTP_BAD_REQUEST); // 400 Bad Request
}
}
}
REST_Controller.php
লাইব্রেরি থেকে ইনহেরিট করা হয়েছে, যা REST API তৈরি করার জন্য ব্যবহার করা হয়।Model তৈরি করতে:
<?php
class User_model extends CI_Model {
public function get_all_users() {
$query = $this->db->get('users');
return $query->result();
}
public function get_user($id) {
$query = $this->db->get_where('users', ['id' => $id]);
return $query->row();
}
public function insert_user($data) {
return $this->db->insert('users', $data);
}
public function update_user($id, $data) {
$this->db->where('id', $id);
return $this->db->update('users', $data);
}
public function delete_user($id) {
return $this->db->delete('users', ['id' => $id]);
}
}
http://yourdomain.com/api/user/1
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
}
http://yourdomain.com/api/user
{
"name": "Jane Doe",
"email": "jane.doe@example.com"
}
{
"name": "Jane Doe",
"email": "jane.doe@example.com"
}
http://yourdomain.com/api/user/1
{
"name": "John Smith",
"email": "john.smith@example.com"
}
{
"name": "John Smith",
"email": "john.smith@example.com"
}
http://yourdomain.com/api/user/1
{}
RESTful API-র জন্য ডকুমেন্টেশন তৈরি করা খুবই গুরুত্বপূর্ণ, কারণ এটি ব্যবহারকারীদের API-এর বিভিন্ন ফিচার এবং রিকোয়েস্ট পদ্ধতি সম্পর্কে জানিয়ে দেয়।
API এর সিকিউরিটি নিশ্চিত করতে:
CodeIgniter-এ RESTful API তৈরি করা সহজ এবং কার্যকর। আপনি GET, POST, PUT, DELETE HTTP মেথড ব্যবহার করে ডেটার CRUD অপারেশন পরিচালনা করতে পারেন এবং JSON রেসপন্স প্রদান করতে পারেন। এই API-এর মাধ্যমে আপনার অ্যাপ্লিকেশন অন্যান্য অ্যাপ্লিকেশন বা মোবাইল অ্যাপ্লিকেশনগুলির সাথে যোগাযোগ করতে সক্ষম হবে।
RESTful API (Representational State Transfer) হলো একটি আর্কিটেকচারাল স্টাইল যা ওয়েব সার্ভিস নির্মাণের জন্য ব্যবহৃত হয়। এটি HTTP প্রোটোকল এবং HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করে। CodeIgniter ফ্রেমওয়ার্কে RESTful API তৈরি করার জন্য একটি সহজ এবং কার্যকরী পদ্ধতি রয়েছে।
RESTful API একটি এপিআই (অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস) যা REST (Representational State Transfer) পদ্ধতি অনুসরণ করে। এটি একটি স্ট্যান্ডার্ড ডিজাইন প্যাটার্ন, যা HTTP প্রোটোকল এবং রিসোর্স ভিত্তিক আর্কিটেকচার ব্যবহার করে সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগ পরিচালনা করে।
RESTful API এ বিভিন্ন HTTP মেথড ব্যবহার করা হয় ডেটা পরিচালনার জন্য:
HTTP Method | বর্ণনা |
---|---|
GET | সার্ভার থেকে ডেটা রিট্রিভ করা। |
POST | নতুন ডেটা সার্ভারে আপলোড করা। |
PUT | বিদ্যমান ডেটা আপডেট করা। |
DELETE | ডেটা সার্ভার থেকে মুছে ফেলা। |
CodeIgniter তে RESTful API তৈরি করতে, সাধারণত REST Controller এবং HTTP methods ব্যবহৃত হয়। এছাড়া, আপনি codeigniter-restserver
লাইব্রেরি ব্যবহার করে সহজেই API তৈরি করতে পারেন।
codeigniter-restserver
লাইব্রেরি ইনস্টল করাcodeigniter-restserver
লাইব্রেরি ইনস্টল করতে হবে।Composer ব্যবহার করে লাইব্রেরি ইনস্টল করতে হবে:
composer require chriso/codeigniter-restserver
CodeIgniter এ API তৈরি করতে একটি কাস্টম কন্ট্রোলার তৈরি করুন, যেটি GET, POST, PUT, DELETE মেথডগুলির মাধ্যমে ডেটা গ্রহণ এবং প্রেরণ করতে পারে।
ApiController.php
কন্ট্রোলার<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use Restserver\Libraries\REST_Controller;
class ApiController extends REST_Controller {
public function __construct() {
parent::__construct();
$this->load->model('User_model'); // মডেল লোড
}
// GET Request - User ডেটা রিটার্ন
public function user_get($id = NULL) {
if ($id === NULL) {
$users = $this->User_model->get_users();
$this->response($users, REST_Controller::HTTP_OK);
} else {
$user = $this->User_model->get_user($id);
if ($user) {
$this->response($user, REST_Controller::HTTP_OK);
} else {
$this->response(['message' => 'User not found'], REST_Controller::HTTP_NOT_FOUND);
}
}
}
// POST Request - নতুন User তৈরি
public function user_post() {
$data = $this->post();
$result = $this->User_model->create_user($data);
if ($result) {
$this->response(['message' => 'User created successfully'], REST_Controller::HTTP_CREATED);
} else {
$this->response(['message' => 'User creation failed'], REST_Controller::HTTP_BAD_REQUEST);
}
}
// PUT Request - User আপডেট করা
public function user_put($id) {
$data = $this->put();
$result = $this->User_model->update_user($id, $data);
if ($result) {
$this->response(['message' => 'User updated successfully'], REST_Controller::HTTP_OK);
} else {
$this->response(['message' => 'User update failed'], REST_Controller::HTTP_BAD_REQUEST);
}
}
// DELETE Request - User ডিলিট করা
public function user_delete($id) {
$result = $this->User_model->delete_user($id);
if ($result) {
$this->response(['message' => 'User deleted successfully'], REST_Controller::HTTP_OK);
} else {
$this->response(['message' => 'User deletion failed'], REST_Controller::HTTP_BAD_REQUEST);
}
}
}
/user
অথবা /user/{id}
রিকোয়েস্টে ব্যবহারকারীদের তথ্য রিটার্ন করে।/user
রিকোয়েস্টে নতুন ইউজার তৈরি করা হয়।/user/{id}
রিকোয়েস্টে ব্যবহারকারী তথ্য আপডেট করা হয়।/user/{id}
রিকোয়েস্টে ব্যবহারকারী তথ্য ডিলিট করা হয়।application/config/routes.php
ফাইলে রাউটিং সেটআপ করুন:
$route['api/user/(:num)'] = 'ApiController/user_get/$1'; // GET request to fetch user by ID
$route['api/user'] = 'ApiController/user_post'; // POST request to create new user
$route['api/user/(:num)'] = 'ApiController/user_put/$1'; // PUT request to update user
$route['api/user/(:num)'] = 'ApiController/user_delete/$1'; // DELETE request to delete user
CodeIgniter-এ RESTful API তৈরি করা খুবই সহজ এবং কার্যকরী। এটি ব্যবহারকারীদের HTTP মেথড ব্যবহার করে ডেটা আদান-প্রদান করতে এবং বিভিন্ন রিসোর্স অ্যাক্সেস করতে সক্ষম করে। CodeIgniter এর সাহায্যে RESTful API দ্রুত তৈরি করা সম্ভব, যা আপনার অ্যাপ্লিকেশনকে আরও স্কেলেবল এবং ইন্টারঅ্যাকটিভ করে তোলে।
REST API (Representational State Transfer Application Programming Interface) হলো একটি প্রোগ্রামিং ইন্টারফেস যা ক্লায়েন্ট এবং সার্ভারের মধ্যে HTTP প্রোটোকল ব্যবহার করে ডেটা আদান-প্রদান করে। CodeIgniter ফ্রেমওয়ার্ক ব্যবহার করে সহজেই একটি REST API তৈরি করা সম্ভব। CodeIgniter একটি লাইটওয়েট ফ্রেমওয়ার্ক হওয়ার কারণে এটি RESTful API তৈরি করতে খুবই উপযুক্ত।
এই গাইডে আমরা দেখব কীভাবে CodeIgniter দিয়ে একটি REST API তৈরি করতে হয়।
CodeIgniter এর জন্য একটি জনপ্রিয় REST API Library হল CodeIgniter REST Server। এটি REST API তৈরি করার জন্য প্রয়োজনীয় সকল ফাংশনালিটি প্রদান করে। আপনাকে এই Library টি ইনস্টল করতে হবে।
application/config/config.php
ফাইলে $config['rest_api']
সেট করুন:
$config['rest_api'] = TRUE;
এরপর application/libraries/Rest.php
ফাইলটি লোড করুন:
$this->load->library('rest');
application/config/rest.php
ফাইলে REST API এর কনফিগারেশন সেট করুন। এখানে কিছু গুরুত্বপূর্ণ কনফিগারেশন প্যারামিটার:
$config['rest_enabled'] = TRUE; // REST API সক্রিয় করা
$config['rest_auth'] = 'basic'; // Authentication টাইপ (basic, none, etc.)
$config['rest_format'] = 'json'; // রেসপন্স ফরম্যাট (json/xml)
$config['rest_valid_keys'] = array('key1', 'key2'); // অ্যাপ্লিকেশন কী (optional)
REST API তৈরি করতে একটি কাস্টম Controller তৈরি করুন, যেখানে API রাউটগুলি থাকবে। উদাহরণস্বরূপ, একটি UserController তৈরি করা হল, যা একটি GET এবং POST রিকোয়েস্ট হ্যান্ডল করবে।
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class UserController extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('UserModel'); // UserModel লোড করা
$this->load->library('rest'); // Rest Library লোড করা
}
// GET রিকোয়েস্ট হ্যান্ডলিং
public function get_user($id = NULL) {
$data = $this->UserModel->get_user($id);
if ($data) {
$this->rest->response($data, 200); // Success response
} else {
$this->rest->response(array('error' => 'No data found'), 404); // Not found
}
}
// POST রিকোয়েস্ট হ্যান্ডলিং
public function create_user() {
$user_data = $this->input->post(); // POST ডেটা গ্রহণ
if ($this->UserModel->insert_user($user_data)) {
$this->rest->response(array('message' => 'User created successfully'), 201); // Created response
} else {
$this->rest->response(array('error' => 'Failed to create user'), 400); // Bad request
}
}
}
get_user($id)
মেথডটি একটি GET রিকোয়েস্ট হ্যান্ডল করে এবং নির্দিষ্ট user ID এর তথ্য রিটার্ন করে।create_user()
মেথডটি একটি POST রিকোয়েস্ট হ্যান্ডল করে এবং নতুন ব্যবহারকারী তৈরি করে।Model তৈরি করার মাধ্যমে ডাটাবেস থেকে ডেটা নিয়ে API এর মাধ্যমে রেসপন্স পাঠানো হয়। এখানে UserModel তৈরি করা হল।
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class UserModel extends CI_Model {
public function get_user($id = NULL) {
if ($id === NULL) {
$query = $this->db->get('users');
return $query->result_array();
}
$query = $this->db->get_where('users', array('id' => $id));
return $query->row_array();
}
public function insert_user($data) {
return $this->db->insert('users', $data);
}
}
get_user($id)
মেথডটি ডাটাবেস থেকে ব্যবহারকারীর তথ্য খুঁজে বের করে।insert_user($data)
মেথডটি ডাটাবেসে নতুন ব্যবহারকারী সংরক্ষণ করে।application/config/routes.php
ফাইলে API রাউটগুলি সঠিকভাবে সেট করুন। উদাহরণ:
$route['api/users/(:num)'] = 'UserController/get_user/$1'; // GET user by ID
$route['api/users'] = 'UserController/create_user'; // POST create user
/api/users/(:num)
: একটি ব্যবহারকারীর তথ্য GET রিকোয়েস্ট দ্বারা পাওয়া যাবে।/api/users
: নতুন ব্যবহারকারী তৈরি করতে POST রিকোয়েস্ট পাঠানো হবে।CodeIgniter REST API JSON রেসপন্স প্রদান করতে নিচের কোড ব্যবহার করা হয়:
$this->rest->response($data, 200); // JSON রেসপন্স এবং HTTP স্ট্যাটাস কোড (200 = OK)
API টেস্ট করার জন্য আপনি Postman বা cURL ব্যবহার করতে পারেন।
GET Request (User by ID):
GET http://localhost/api/users/1
POST Request (Create User):
POST http://localhost/api/users
Request Body:
{
"name": "John Doe",
"email": "john.doe@example.com",
"password": "123456"
}
CodeIgniter দিয়ে REST API তৈরি করা খুবই সহজ। RESTful API ব্যবহারকারীদের JSON ফরম্যাটে ডেটা প্রদান করে এবং সেগুলিকে সহজভাবে ম্যানিপুলেট করা যায়। এই গাইডে আমরা দেখেছি কীভাবে GET, POST রিকোয়েস্ট হ্যান্ডল করা হয় এবং কীভাবে ডাটাবেস থেকে ডেটা রিটার্ন করা যায়।
API (Application Programming Interface) হল একটি ইন্টারফেস যা বিভিন্ন সিস্টেমের মধ্যে ডেটা আদান-প্রদান করতে ব্যবহৃত হয়। CodeIgniter একটি শক্তিশালী ফ্রেমওয়ার্ক যা RESTful API তৈরি করার জন্য সহজ পদ্ধতি সরবরাহ করে। RESTful API তৈরির জন্য HTTP মেথডগুলি (যেমন GET, POST, PUT, DELETE) ব্যবহার করা হয়, এবং CodeIgniter এ এই মেথডগুলির মাধ্যমে ডেটা পরিচালনা করা যায়।
এই টিউটোরিয়ালে, আমরা API endpoints এবং HTTP মেথডগুলো নিয়ে আলোচনা করবো এবং দেখাবো কীভাবে CodeIgniter ব্যবহার করে GET, POST, PUT, এবং DELETE মেথডের মাধ্যমে API তৈরি করা যায়।
RESTful API তৈরির জন্য প্রধানত চারটি HTTP মেথড ব্যবহৃত হয়:
প্রথমে একটি API কন্ট্রোলার তৈরি করতে হবে যেখানে API endpoints এবং HTTP মেথডগুলির জন্য মেথডগুলো থাকবে।
ApiController.php
)<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class ApiController extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->database(); // ডাটাবেস লোড
$this->load->helper('url'); // URL হেল্পার লোড
}
// GET: Retrieve a list of users
public function get_users() {
$query = $this->db->get('users'); // users টেবিল থেকে ডেটা পাওয়া
$data = $query->result_array();
echo json_encode($data); // JSON রেসপন্স
}
// POST: Create a new user
public function create_user() {
$data = json_decode(file_get_contents('php://input'), true); // JSON রিকোয়েস্ট ডেটা
$this->db->insert('users', $data); // ডেটা ইনসার্ট করা
echo json_encode(['status' => 'success', 'message' => 'User created successfully']);
}
// PUT: Update an existing user
public function update_user($id) {
$data = json_decode(file_get_contents('php://input'), true); // JSON রিকোয়েস্ট ডেটা
$this->db->where('id', $id);
$this->db->update('users', $data); // ডেটা আপডেট করা
echo json_encode(['status' => 'success', 'message' => 'User updated successfully']);
}
// DELETE: Delete a user
public function delete_user($id) {
$this->db->where('id', $id);
$this->db->delete('users'); // ডেটা ডিলিট করা
echo json_encode(['status' => 'success', 'message' => 'User deleted successfully']);
}
}
get_users()
মেথডটি GET
রিকোয়েস্টের মাধ্যমে users
টেবিল থেকে সমস্ত ব্যবহারকারীর তথ্য সংগ্রহ করে এবং JSON আকারে রিটার্ন করে।create_user()
মেথডটি POST
রিকোয়েস্টের মাধ্যমে নতুন ব্যবহারকারী তৈরি করে।update_user($id)
মেথডটি PUT
রিকোয়েস্টের মাধ্যমে একটি বিদ্যমান ব্যবহারকারীকে আপডেট করে।delete_user($id)
মেথডটি DELETE
রিকোয়েস্টের মাধ্যমে একটি ব্যবহারকারী মুছে ফেলে।application/config/routes.php
ফাইলে API endpoints রাউটিং সেটআপ করুন।
$route['api/users'] = 'ApiController/get_users'; // GET all users
$route['api/user/create'] = 'ApiController/create_user'; // POST create user
$route['api/user/update/(:num)'] = 'ApiController/update_user/$1'; // PUT update user
$route['api/user/delete/(:num)'] = 'ApiController/delete_user/$1'; // DELETE delete user
এখানে:
/api/users
: সমস্ত ব্যবহারকারীর তালিকা দেখানোর জন্য GET
রিকোয়েস্ট।/api/user/create
: নতুন ব্যবহারকারী তৈরি করার জন্য POST
রিকোয়েস্ট।/api/user/update/{id}
: নির্দিষ্ট ব্যবহারকারী আপডেট করার জন্য PUT
রিকোয়েস্ট।/api/user/delete/{id}
: নির্দিষ্ট ব্যবহারকারী মুছে ফেলার জন্য DELETE
রিকোয়েস্ট।GET মেথড API কল ব্যবহারকারীর কাছে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, সমস্ত ব্যবহারকারীর তালিকা বের করার জন্য:
API Call (GET):
GET http://localhost/your_project/api/users
Response (JSON):
[
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
},
{
"id": 2,
"name": "Jane Doe",
"email": "jane.doe@example.com"
}
]
POST মেথড ব্যবহারকারী থেকে ডেটা গ্রহণ করে এবং ডাটাবেসে নতুন রেকর্ড যোগ করে।
API Call (POST):
POST http://localhost/your_project/api/user/create
Content-Type: application/json
Body:
{
"name": "New User",
"email": "new.user@example.com"
}
Response (JSON):
{
"status": "success",
"message": "User created successfully"
}
PUT মেথড ব্যবহারকারী থেকে নতুন ডেটা গ্রহণ করে এবং একটি বিদ্যমান রেকর্ড আপডেট করে।
API Call (PUT):
PUT http://localhost/your_project/api/user/update/1
Content-Type: application/json
Body:
{
"name": "Updated User",
"email": "updated.user@example.com"
}
Response (JSON):
{
"status": "success",
"message": "User updated successfully"
}
DELETE মেথড একটি নির্দিষ্ট ডেটা মুছে ফেলার জন্য ব্যবহার করা হয়।
API Call (DELETE):
DELETE http://localhost/your_project/api/user/delete/1
Response (JSON):
{
"status": "success",
"message": "User deleted successfully"
}
এটি গুরুত্বপূর্ণ যে আপনি আপনার API গুলিকে সুরক্ষিত রাখবেন। API সুরক্ষার জন্য API Key, OAuth বা JWT (JSON Web Tokens) ব্যবহার করা যেতে পারে। CodeIgniter-এ Authorization
হেডার চেক করে সুরক্ষা নিশ্চিত করা সম্ভব।
CodeIgniter-এ API endpoints তৈরি করা সহজ এবং কার্যকরী। GET, POST, PUT, এবং DELETE মেথড ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশন থেকে ডেটা প্রক্রিয়া এবং পরিচালনা করতে পারেন। এটি RESTful API তৈরির জন্য একটি কার্যকরী পদ্ধতি এবং আপনাকে JSON ডেটা বিনিময় করতে সাহায্য করে।
API Authentication এবং Token Based Security ওয়েব অ্যাপ্লিকেশন বা মোবাইল অ্যাপ্লিকেশনগুলির মধ্যে নিরাপদ ডেটা আদান-প্রদান এবং ব্যবহারকারী যাচাই করার জন্য অত্যন্ত গুরুত্বপূর্ণ। CodeIgniter ফ্রেমওয়ার্কে API Authentication এবং Token-based Security বাস্তবায়নের জন্য সাধারণত JWT (JSON Web Token) বা OAuth পদ্ধতি ব্যবহৃত হয়।
এই গাইডে, আমরা JWT ব্যবহার করে API Authentication এবং Token Based Security কিভাবে CodeIgniter-এ বাস্তবায়ন করা যায়, তা ব্যাখ্যা করবো।
JWT (JSON Web Token) হল একটি ওপেন স্ট্যান্ডার্ড (RFC 7519) যা একটি টোকেন হিসেবে JSON অবজেক্টের মধ্যে তথ্য সংরক্ষণ করে। এটি নিরাপদভাবে একাধিক সিস্টেমের মধ্যে তথ্য আদান-প্রদান করতে ব্যবহৃত হয়। JWT একটি header, payload, এবং signature দ্বারা গঠিত।
CodeIgniter এ JWT authentication বাস্তবায়নের জন্য একটি JWT লাইব্রেরি ইনস্টল করতে হবে। এটি ব্যবহার করার জন্য একটি third-party library বা composer ব্যবহার করা যেতে পারে।
যদি Composer ব্যবহার করেন, তাহলে আপনার প্রজেক্টের ডিরেক্টরিতে কমান্ড চালান:
composer require firebase/php-jwt
যদি Composer ব্যবহার না করেন, তাহলে firebase/php-jwt লাইব্রেরিটি GitHub থেকে ডাউনলোড করে application/libraries
ফোল্ডারে রাখুন।
যদি আপনি manual ইনস্টলেশন করেন, তবে JWT.php ক্লাস লোড করতে হবে:
require_once(APPPATH.'libraries/JWT.php');
এখন আমরা Authentication Controller তৈরি করবো, যা লগইন করলে JWT টোকেন তৈরি করবে এবং API রিকোয়েস্টে ওই টোকেন যাচাই করবে।
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use \Firebase\JWT\JWT;
class Auth extends CI_Controller {
private $secret_key = "your_secret_key"; // আপনার সিক্রেট কি
public function __construct() {
parent::__construct();
$this->load->library('form_validation');
$this->load->model('User_model');
}
// লগইন এবং JWT টোকেন রিটার্ন
public function login() {
$username = $this->input->post('username');
$password = $this->input->post('password');
$user = $this->User_model->get_user_by_credentials($username, $password);
if ($user) {
// JWT টোকেন তৈরি
$payload = array(
"iat" => time(),
"exp" => time() + 3600, // 1 ঘণ্টার জন্য টোকেন বৈধ
"user_id" => $user->id
);
$jwt = JWT::encode($payload, $this->secret_key);
// সফল লগইনের পরে JWT টোকেন রিটার্ন
echo json_encode(array('status' => 'success', 'token' => $jwt));
} else {
// ইউজার পাওয়া না গেলে
echo json_encode(array('status' => 'error', 'message' => 'Invalid credentials'));
}
}
}
এখন API রিকোয়েস্টে JWT টোকেন যাচাই করার জন্য একটি মেথড তৈরি করা হবে।
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use \Firebase\JWT\JWT;
class Api extends CI_Controller {
private $secret_key = "your_secret_key"; // আপনার সিক্রেট কি
public function __construct() {
parent::__construct();
}
// Token যাচাই
public function authenticate() {
$token = $this->input->get_request_header('Authorization'); // Authorization হেডার থেকে টোকেন পাওয়া
if ($token) {
try {
// JWT টোকেন ডিকোড করা
$decoded = JWT::decode($token, $this->secret_key);
$user_id = $decoded->user_id; // টোকেন থেকে ইউজার আইডি পাওয়া
// সফলভাবে যাচাই হলে, ডেটা রিটার্ন
echo json_encode(array('status' => 'success', 'user_id' => $user_id));
} catch (Exception $e) {
// যদি টোকেন অবৈধ হয়
echo json_encode(array('status' => 'error', 'message' => 'Invalid token'));
}
} else {
echo json_encode(array('status' => 'error', 'message' => 'Token not provided'));
}
}
}
এখন আমরা AJAX কলের মাধ্যমে JWT টোকেন ব্যবহার করে ডেটা পাঠাবো।
$.ajax({
url: 'http://example.com/api/authenticate', // API URL
type: 'GET',
headers: {
'Authorization': 'Bearer ' + token // JWT টোকেন
},
success: function(response) {
console.log(response);
},
error: function() {
console.log('Invalid token');
}
});
CodeIgniter-এ API Authentication এবং Token-Based Security বাস্তবায়নের জন্য JWT (JSON Web Token) অত্যন্ত কার্যকরী পদ্ধতি। এটি নিরাপদ এবং কার্যকরী ডেটা আদান-প্রদান নিশ্চিত করে, যেখানে সার্ভার সাইডে শুধুমাত্র একটি সিক্রেট কিপর্যন্ত ব্যবহারকারী যাচাই করা হয়। JWT ব্যবহার করলে, আপনার API গুলি নিরাপদ এবং স্কেলেবল হবে।
Read more